package com.itcorey.interview.pojo.StreamTest;

import com.itcorey.interview.pojo.DTO;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;

/**
 * @Auther: corey
 * @Date: 2021/3/12 21:15
 * @Description: list 流测试
 */
public class ListStreamTest {

    public static void main(String[] args) {
        List<DTO> list = Arrays.asList(new DTO("苹果", 20), new DTO("香蕉", 35), new DTO("香蕉", 35), new DTO("橘子", 15), new DTO("芒果", 50));
        //filter 过滤价格大于20 的水果
        list.stream().filter(s -> s.getAge() > 20).forEach(System.out::println);
        //类型转化map(转换过程中，需要return)，将price的类型转换为Dubbo 返回dubbo类型的age
        List<Double> collect = list.stream().map(s -> Double.valueOf(s.getAge())).collect(Collectors.toList());
        System.out.println("类型转化ma" + collect);
        list.stream().mapToDouble(s -> s.getAge().doubleValue()).forEach(System.out::println);

        //limit 截取数组
        list.stream().limit(3).forEach(System.out::println);


        System.out.println("=========我是分割线=============");
        //sorted 数据排序后 会存在异常
        // List<DTO> collect1 = list.stream().sorted().collect(Collectors.toList());
        // System.out.println("sort排序"+collect1);

        list.stream().sorted(Comparator.comparing(DTO::getAge)).forEach(System.out::println);

        System.out.println("=========我是分割线=============");
        //distinct 去重
        list.stream().distinct().forEach(s -> System.out.println(s + ""));

        System.out.println("=========我是分割线=============");

        //count 统计
        System.out.println(list.stream().count());

        //allMatch anyMatch 条件返回
        List<String> addList = new ArrayList<>();
        List<String> anyMatchList = Arrays.asList("1", "2", "3", "4", "5");

        // 返回值可以理解为是否遍历了所有元素
        boolean b = anyMatchList.stream().allMatch(o -> {
            addList.add(o);
            // 为false时返回
            return addList.size() < 6;

        });
        System.out.println(addList.toString() + b);



    }
}
